package com.ywx.intelligentaicodegeneration.service;

import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.service.IService;
import com.ywx.intelligentaicodegeneration.mode.dto.app.AppQueryRequest;
import com.ywx.intelligentaicodegeneration.mode.entity.App;
import com.ywx.intelligentaicodegeneration.mode.entity.User;
import com.ywx.intelligentaicodegeneration.mode.vo.AppVO;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * 应用 服务层。
 *
 * @author <a href=\"https://gitee.com/JING5201314/aicode-gen-pro\">ywx</a>
 */
public interface AppService extends IService<App> {



    public AppVO getAppVO(App app);

    QueryWrapper getQueryWrapper(AppQueryRequest appQueryRequest);

    List<AppVO> getAppVOList(List<App> appList);

    /**
     * 通过对话生成应用代码
     * @param userMessage  生成提示词
     * @param appId 应用ID
     * @param loginUser 登录用户
     * @return 生成的代码(流式)
     */
    Flux<String> chatToGenCode(String userMessage, Long appId, User loginUser);

    /**
     * 部署应用
     * @param appId 应用ID
     * @param loginUser 登录用户
     * @return 可访问地址
     */
    String deployApp(Long appId, User loginUser);

    /**
     * 权限检查
     * @param appId 应用ID
     * @param loginUser 登录用户
     * @param adminIsTrue  管理员是否可以查看
     * @return true:有权限,false:无权限
     */
    boolean PermissionCheck(Long appId, User loginUser,boolean adminIsTrue);
}
